home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / xearth-0.92 / gif.c < prev    next >
C/C++ Source or Header  |  1995-06-25  |  2KB  |  90 lines

  1. /*
  2.  * gif.c
  3.  * kirk johnson
  4.  * july 1993
  5.  *
  6.  * RCS $Id: gif.c,v 1.5 1994/05/20 01:37:40 tuna Exp $
  7.  *
  8.  * Copyright (C) 1989, 1990, 1993, 1994 Kirk Lauritz Johnson
  9.  *
  10.  * Parts of the source code (as marked) are:
  11.  *   Copyright (C) 1989, 1990, 1991 by Jim Frost
  12.  *   Copyright (C) 1992 by Jamie Zawinski <jwz@lucid.com>
  13.  *
  14.  * Permission to use, copy, modify, distribute, and sell this
  15.  * software and its documentation for any purpose is hereby granted
  16.  * without fee, provided that the above copyright notice appear in
  17.  * all copies and that both that copyright notice and this
  18.  * permission notice appear in supporting documentation. The author
  19.  * makes no representations about the suitability of this software
  20.  * for any purpose. It is provided "as is" without express or
  21.  * implied warranty.
  22.  *
  23.  * THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
  24.  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
  25.  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT
  26.  * OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
  27.  * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
  28.  * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
  29.  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  30.  */
  31.  
  32. #include "xearth.h"
  33. #include "giflib.h"
  34. #include "kljcpyrt.h"
  35.  
  36. static u_char *dith;
  37.  
  38.  
  39. void gif_setup(s)
  40.      FILE *s;
  41. {
  42.   int  i;
  43.   int  rtn;
  44.   BYTE cmap[3][256];
  45.  
  46.   dither_setup(num_colors);
  47.   dith = (u_char *) malloc((unsigned) wdth);
  48.   assert(dith != NULL);
  49.  
  50.   for (i=0; i<dither_ncolors; i++)
  51.   {
  52.     cmap[0][i] = dither_colormap[i*3+0];
  53.     cmap[1][i] = dither_colormap[i*3+1];
  54.     cmap[2][i] = dither_colormap[i*3+2];
  55.   }
  56.  
  57.   rtn = gifout_open_file(s, wdth, hght, dither_ncolors, cmap, 0);
  58.   assert(rtn == GIFLIB_SUCCESS);
  59.  
  60.   rtn = gifout_open_image(0, 0, wdth, hght);
  61.   assert(rtn == GIFLIB_SUCCESS);
  62. }
  63.  
  64.  
  65. void gif_row(row)
  66.      u_char *row;
  67. {
  68.   int i;
  69.  
  70.   dither_row(row, dith);
  71.  
  72.   for (i=0; i<wdth; i++)
  73.     gifout_put_pixel(dith[i]);
  74. }
  75.  
  76.  
  77. void gif_cleanup()
  78. {
  79.   int rtn;
  80.  
  81.   rtn = gifout_close_image();
  82.   assert(rtn == GIFLIB_SUCCESS);
  83.  
  84.   rtn = gifout_close_file();
  85.   assert(rtn == GIFLIB_SUCCESS);
  86.  
  87.   dither_cleanup();
  88.   free(dith);
  89. }
  90.